home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 October: Mac OS SDK / Dev.CD Oct 97 SDK1.toast / Development Kits (Disc 1) / Interfaces&Libraries / Universal / Interfaces / CIncludes / Connections.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-08-12  |  13.2 KB  |  501 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        Connections.h
  3.  
  4.      Contains:    Communications Toolbox Connection Manager Interfaces.
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Release:    Universal Interfaces 3.0.1
  8.  
  9.      Copyright:    © 1988-1997 by Apple Computer, Inc., all rights reserved
  10.  
  11.      Bugs?:        Please include the the file and version information (from above) with
  12.                  the problem description.  Developers belonging to one of the Apple
  13.                  developer programs can submit bug reports to:
  14.  
  15.                      devsupport@apple.com
  16.  
  17. */
  18. #ifndef __CONNECTIONS__
  19. #define __CONNECTIONS__
  20.  
  21. #ifndef __CONDITIONALMACROS__
  22. #include <ConditionalMacros.h>
  23. #endif
  24. #ifndef __TYPES__
  25. #include <Types.h>
  26. #endif
  27. #ifndef __MIXEDMODE__
  28. #include <MixedMode.h>
  29. #endif
  30. #ifndef __DIALOGS__
  31. #include <Dialogs.h>
  32. #endif
  33.  
  34.  
  35.  
  36. #if PRAGMA_ONCE
  37. #pragma once
  38. #endif
  39.  
  40. #ifdef __cplusplus
  41. extern "C" {
  42. #endif
  43.  
  44. #if PRAGMA_IMPORT
  45. #pragma import on
  46. #endif
  47.  
  48. #if PRAGMA_STRUCT_ALIGN
  49.     #pragma options align=mac68k
  50. #elif PRAGMA_STRUCT_PACKPUSH
  51.     #pragma pack(push, 2)
  52. #elif PRAGMA_STRUCT_PACK
  53.     #pragma pack(2)
  54. #endif
  55.  
  56.  
  57. enum {
  58.     curCMVersion                = 2                                /* current Connection Manager version*/
  59. };
  60.  
  61.  
  62. enum {
  63.     curConnEnvRecVers            = 0                                /*    current Connection Manager Environment Record version*/
  64. };
  65.  
  66.  
  67. enum {
  68.                                                                 /* CMErr */
  69.     cmGenericError                = -1,
  70.     cmNoErr                        = 0,
  71.     cmRejected                    = 1,
  72.     cmFailed                    = 2,
  73.     cmTimeOut                    = 3,
  74.     cmNotOpen                    = 4,
  75.     cmNotClosed                    = 5,
  76.     cmNoRequestPending            = 6,
  77.     cmNotSupported                = 7,
  78.     cmNoTools                    = 8,
  79.     cmUserCancel                = 9,
  80.     cmUnknownError                = 11
  81. };
  82.  
  83. typedef OSErr                             CMErr;
  84.  
  85.  
  86. enum {
  87.     cmData                        = 1L << 0,
  88.     cmCntl                        = 1L << 1,
  89.     cmAttn                        = 1L << 2,
  90.     cmDataNoTimeout                = 1L << 4,
  91.     cmCntlNoTimeout                = 1L << 5,
  92.     cmAttnNoTimeout                = 1L << 6,
  93.     cmDataClean                    = 1L << 8,
  94.     cmCntlClean                    = 1L << 9,
  95.     cmAttnClean                    = 1L << 10,                        /*        Only for CMRecFlags (not CMChannel) in the rest of this enum    */
  96.     cmNoMenus                    = 1L << 16,
  97.     cmQuiet                        = 1L << 17,
  98.     cmConfigChanged                = 1L << 18
  99. };
  100.  
  101. /* CMRecFlags and CMChannel        */
  102. /*        Low word of CMRecFlags is same as CMChannel    */
  103. typedef long                             CMRecFlags;
  104. typedef short                             CMChannel;
  105.  
  106.  
  107.  
  108. enum {
  109.     cmStatusOpening                = 1L << 0,
  110.     cmStatusOpen                = 1L << 1,
  111.     cmStatusClosing                = 1L << 2,
  112.     cmStatusDataAvail            = 1L << 3,
  113.     cmStatusCntlAvail            = 1L << 4,
  114.     cmStatusAttnAvail            = 1L << 5,
  115.     cmStatusDRPend                = 1L << 6,                        /* data read pending    */
  116.     cmStatusDWPend                = 1L << 7,                        /* data write pending    */
  117.     cmStatusCRPend                = 1L << 8,                        /* cntl read pending    */
  118.     cmStatusCWPend                = 1L << 9,                        /* cntl write pending    */
  119.     cmStatusARPend                = 1L << 10,                        /* attn read pending    */
  120.     cmStatusAWPend                = 1L << 11,                        /* attn write pending    */
  121.     cmStatusBreakPend            = 1L << 12,
  122.     cmStatusListenPend            = 1L << 13,
  123.     cmStatusIncomingCallPresent    = 1L << 14,
  124.     cmStatusReserved0            = 1L << 15
  125. };
  126.  
  127. typedef unsigned long                     CMStatFlags;
  128.  
  129. enum {
  130.     cmDataIn                    = 0,
  131.     cmDataOut                    = 1,
  132.     cmCntlIn                    = 2,
  133.     cmCntlOut                    = 3,
  134.     cmAttnIn                    = 4,
  135.     cmAttnOut                    = 5,
  136.     cmRsrvIn                    = 6,
  137.     cmRsrvOut                    = 7
  138. };
  139.  
  140. typedef unsigned short                     CMBufFields;
  141. typedef Ptr                             CMBuffers[8];
  142. typedef long                             CMBufferSizes[8];
  143. typedef const long *                    ConstCMBufferSizesParam;
  144.  
  145. enum {
  146.     cmSearchSevenBit            = 1L << 0
  147. };
  148.  
  149. typedef unsigned short                     CMSearchFlags;
  150.  
  151. enum {
  152.     cmFlagsEOM                    = 1L << 0
  153. };
  154.  
  155. typedef unsigned short                     CMFlags;
  156. struct ConnEnvironRec {
  157.     short                             version;
  158.     long                             baudRate;
  159.     short                             dataBits;
  160.     CMChannel                         channels;
  161.     Boolean                         swFlowControl;
  162.     Boolean                         hwFlowControl;
  163.     CMFlags                         flags;
  164. };
  165. typedef struct ConnEnvironRec ConnEnvironRec;
  166.  
  167. typedef ConnEnvironRec *                ConnEnvironRecPtr;
  168. typedef struct ConnRecord                 ConnRecord;
  169. typedef ConnRecord *                    ConnPtr;
  170. typedef ConnPtr *                        ConnHandle;
  171. typedef CALLBACK_API( long , ConnectionToolDefProcPtr )(ConnHandle hConn, short msg, long p1, long p2, long p3);
  172. typedef CALLBACK_API( void , ConnectionSearchCallBackProcPtr )(ConnHandle hConn, Ptr matchPtr, long refNum);
  173. typedef CALLBACK_API( void , ConnectionCompletionProcPtr )(ConnHandle hConn);
  174. typedef CALLBACK_API( void , ConnectionChooseIdleProcPtr )(void );
  175. typedef STACK_UPP_TYPE(ConnectionToolDefProcPtr)                 ConnectionToolDefUPP;
  176. typedef STACK_UPP_TYPE(ConnectionSearchCallBackProcPtr)         ConnectionSearchCallBackUPP;
  177. typedef STACK_UPP_TYPE(ConnectionCompletionProcPtr)             ConnectionCompletionUPP;
  178. typedef STACK_UPP_TYPE(ConnectionChooseIdleProcPtr)             ConnectionChooseIdleUPP;
  179. struct ConnRecord {
  180.     short                             procID;
  181.     CMRecFlags                         flags;
  182.     CMErr                             errCode;
  183.     long                             refCon;
  184.     long                             userData;
  185.     ConnectionToolDefUPP             defProc;
  186.     Ptr                             config;
  187.     Ptr                             oldConfig;
  188.     long                             asyncEOM;
  189.     long                             reserved1;
  190.     long                             reserved2;
  191.     Ptr                             cmPrivate;
  192.     CMBuffers                         bufferArray;
  193.     CMBufferSizes                     bufSizes;
  194.     long                             mluField;
  195.     CMBufferSizes                     asyncCount;
  196. };
  197.  
  198.  
  199. enum {
  200.                                                                 /* CMIOPB constants and structure */
  201.     cmIOPBQType                    = 10,
  202.     cmIOPBversion                = 0
  203. };
  204.  
  205. struct CMIOPB {
  206.     QElemPtr                         qLink;
  207.     short                             qType;                        /* cmIOPBQType */
  208.     ConnHandle                         hConn;
  209.     Ptr                             theBuffer;
  210.     long                             count;
  211.     CMFlags                         flags;
  212.     ConnectionCompletionUPP         userCompletion;
  213.     long                             timeout;
  214.     CMErr                             errCode;
  215.     CMChannel                         channel;
  216.     long                             asyncEOM;
  217.     long                             reserved1;
  218.     short                             reserved2;
  219.     short                             version;                    /* cmIOPBversion */
  220.     long                             refCon;                        /* for application */
  221.     long                             toolData1;                    /* for tool */
  222.     long                             toolData2;                    /* for tool */
  223. };
  224. typedef struct CMIOPB CMIOPB;
  225.  
  226. typedef CMIOPB *                        CMIOPBPtr;
  227. enum { uppConnectionToolDefProcInfo = 0x0000FEF0 };             /* pascal 4_bytes Func(4_bytes, 2_bytes, 4_bytes, 4_bytes, 4_bytes) */
  228. enum { uppConnectionSearchCallBackProcInfo = 0x00000FC0 };         /* pascal no_return_value Func(4_bytes, 4_bytes, 4_bytes) */
  229. enum { uppConnectionCompletionProcInfo = 0x000000C0 };             /* pascal no_return_value Func(4_bytes) */
  230. enum { uppConnectionChooseIdleProcInfo = 0x00000000 };             /* pascal no_return_value Func() */
  231. #define CallConnectionToolDefProc(userRoutine, hConn, msg, p1, p2, p3)  CALL_FIVE_PARAMETER_UPP((userRoutine), uppConnectionToolDefProcInfo, (hConn), (msg), (p1), (p2), (p3))
  232. #define CallConnectionSearchCallBackProc(userRoutine, hConn, matchPtr, refNum)  CALL_THREE_PARAMETER_UPP((userRoutine), uppConnectionSearchCallBackProcInfo, (hConn), (matchPtr), (refNum))
  233. #define CallConnectionCompletionProc(userRoutine, hConn)         CALL_ONE_PARAMETER_UPP((userRoutine), uppConnectionCompletionProcInfo, (hConn))
  234. #define CallConnectionChooseIdleProc(userRoutine)                 CALL_ZERO_PARAMETER_UPP((userRoutine), uppConnectionChooseIdleProcInfo)
  235. #define NewConnectionToolDefProc(userRoutine)                     (ConnectionToolDefUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppConnectionToolDefProcInfo, GetCurrentArchitecture())
  236. #define NewConnectionSearchCallBackProc(userRoutine)             (ConnectionSearchCallBackUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppConnectionSearchCallBackProcInfo, GetCurrentArchitecture())
  237. #define NewConnectionCompletionProc(userRoutine)                 (ConnectionCompletionUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppConnectionCompletionProcInfo, GetCurrentArchitecture())
  238. #define NewConnectionChooseIdleProc(userRoutine)                 (ConnectionChooseIdleUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppConnectionChooseIdleProcInfo, GetCurrentArchitecture())
  239.  
  240.  
  241. EXTERN_API( CMErr )
  242. InitCM                            (void);
  243.  
  244. EXTERN_API( Handle )
  245. CMGetVersion                    (ConnHandle             hConn);
  246.  
  247. EXTERN_API( short )
  248. CMGetCMVersion                    (void);
  249.  
  250. EXTERN_API( ConnHandle )
  251. CMNew                            (short                     procID,
  252.                                  CMRecFlags             flags,
  253.                                  ConstCMBufferSizesParam  desiredSizes,
  254.                                  long                     refCon,
  255.                                  long                     userData);
  256.  
  257. EXTERN_API( void )
  258. CMDispose                        (ConnHandle             hConn);
  259.  
  260. EXTERN_API( CMErr )
  261. CMListen                        (ConnHandle             hConn,
  262.                                  Boolean                 async,
  263.                                  ConnectionCompletionUPP  completor,
  264.                                  long                     timeout);
  265.  
  266. EXTERN_API( CMErr )
  267. CMAccept                        (ConnHandle             hConn,
  268.                                  Boolean                 accept);
  269.  
  270. EXTERN_API( CMErr )
  271. CMOpen                            (ConnHandle             hConn,
  272.                                  Boolean                 async,
  273.                                  ConnectionCompletionUPP  completor,
  274.                                  long                     timeout);
  275.  
  276. EXTERN_API( CMErr )
  277. CMClose                            (ConnHandle             hConn,
  278.                                  Boolean                 async,
  279.                                  ConnectionCompletionUPP  completor,
  280.                                  long                     timeout,
  281.                                  Boolean                 now);
  282.  
  283. EXTERN_API( CMErr )
  284. CMAbort                            (ConnHandle             hConn);
  285.  
  286. EXTERN_API( CMErr )
  287. CMStatus                        (ConnHandle             hConn,
  288.                                  CMBufferSizes             sizes,
  289.                                  CMStatFlags *            flags);
  290.  
  291. EXTERN_API( void )
  292. CMIdle                            (ConnHandle             hConn);
  293.  
  294. EXTERN_API( void )
  295. CMReset                            (ConnHandle             hConn);
  296.  
  297. EXTERN_API( void )
  298. CMBreak                            (ConnHandle             hConn,
  299.                                  long                     duration,
  300.                                  Boolean                 async,
  301.                                  ConnectionCompletionUPP  completor);
  302.  
  303. EXTERN_API( CMErr )
  304. CMRead                            (ConnHandle             hConn,
  305.                                  void *                    theBuffer,
  306.                                  long *                    toRead,
  307.                                  CMChannel                 theChannel,
  308.                                  Boolean                 async,
  309.                                  ConnectionCompletionUPP  completor,
  310.                                  long                     timeout,
  311.                                  CMFlags *                flags);
  312.  
  313. EXTERN_API( CMErr )
  314. CMWrite                            (ConnHandle             hConn,
  315.                                  const void *            theBuffer,
  316.                                  long *                    toWrite,
  317.                                  CMChannel                 theChannel,
  318.                                  Boolean                 async,
  319.                                  ConnectionCompletionUPP  completor,
  320.                                  long                     timeout,
  321.                                  CMFlags                 flags);
  322.  
  323. EXTERN_API( CMErr )
  324. CMIOKill                        (ConnHandle             hConn,
  325.                                  short                     which);
  326.  
  327. EXTERN_API( void )
  328. CMActivate                        (ConnHandle             hConn,
  329.                                  Boolean                 activate);
  330.  
  331. EXTERN_API( void )
  332. CMResume                        (ConnHandle             hConn,
  333.                                  Boolean                 resume);
  334.  
  335. EXTERN_API( Boolean )
  336. CMMenu                            (ConnHandle             hConn,
  337.                                  short                     menuID,
  338.                                  short                     item);
  339.  
  340. EXTERN_API( Boolean )
  341. CMValidate                        (ConnHandle             hConn);
  342.  
  343. EXTERN_API( void )
  344. CMDefault                        (Ptr *                    theConfig,
  345.                                  short                     procID,
  346.                                  Boolean                 allocate);
  347.  
  348. EXTERN_API( Handle )
  349. CMSetupPreflight                (short                     procID,
  350.                                  long *                    magicCookie);
  351.  
  352. EXTERN_API( Boolean )
  353. CMSetupFilter                    (short                     procID,
  354.                                  const void *            theConfig,
  355.                                  short                     count,
  356.                                  DialogPtr                 theDialog,
  357.                                  EventRecord *            theEvent,
  358.                                  short *                theItem,
  359.                                  long *                    magicCookie);
  360.  
  361. EXTERN_API( void )
  362. CMSetupSetup                    (short                     procID,
  363.                                  const void *            theConfig,
  364.                                  short                     count,
  365.                                  DialogPtr                 theDialog,
  366.                                  long *                    magicCookie);
  367.  
  368. EXTERN_API( void )
  369. CMSetupItem                        (short                     procID,
  370.                                  const void *            theConfig,
  371.                                  short                     count,
  372.                                  DialogPtr                 theDialog,
  373.                                  short *                theItem,
  374.                                  long *                    magicCookie);
  375.  
  376. EXTERN_API( void )
  377. CMSetupXCleanup                    (short                     procID,
  378.                                  const void *            theConfig,
  379.                                  short                     count,
  380.                                  DialogPtr                 theDialog,
  381.                                  Boolean                 OKed,
  382.                                  long *                    magicCookie);
  383.  
  384. EXTERN_API( void )
  385. CMSetupPostflight                (short                     procID);
  386.  
  387. EXTERN_API( Ptr )
  388. CMGetConfig                        (ConnHandle             hConn);
  389.  
  390. EXTERN_API( short )
  391. CMSetConfig                        (ConnHandle             hConn,
  392.                                  const void *            thePtr);
  393.  
  394. EXTERN_API( OSErr )
  395. CMIntlToEnglish                    (ConnHandle             hConn,
  396.                                  const void *            inputPtr,
  397.                                  Ptr *                    outputPtr,
  398.                                  short                     language);
  399.  
  400. EXTERN_API( OSErr )
  401. CMEnglishToIntl                    (ConnHandle             hConn,
  402.                                  const void *            inputPtr,
  403.                                  Ptr *                    outputPtr,
  404.                                  short                     language);
  405.  
  406. EXTERN_API( long )
  407. CMAddSearch                        (ConnHandle             hConn,
  408.                                  ConstStr255Param         theString,
  409.                                  CMSearchFlags             flags,
  410.                                  ConnectionSearchCallBackUPP  callBack);
  411.  
  412. EXTERN_API( void )
  413. CMRemoveSearch                    (ConnHandle             hConn,
  414.                                  long                     refnum);
  415.  
  416. EXTERN_API( void )
  417. CMClearSearch                    (ConnHandle             hConn);
  418.  
  419. EXTERN_API( CMErr )
  420. CMGetConnEnvirons                (ConnHandle             hConn,
  421.                                  ConnEnvironRec *        theEnvirons);
  422.  
  423. EXTERN_API( short )
  424. CMChoose                        (ConnHandle *            hConn,
  425.                                  Point                     where,
  426.                                  ConnectionChooseIdleUPP  idle);
  427.  
  428. EXTERN_API( void )
  429. CMEvent                            (ConnHandle             hConn,
  430.                                  const EventRecord *    theEvent);
  431.  
  432. EXTERN_API( void )
  433. CMGetToolName                    (short                     procID,
  434.                                  Str255                 name);
  435.  
  436. EXTERN_API( short )
  437. CMGetProcID                        (ConstStr255Param         name);
  438.  
  439. EXTERN_API( void )
  440. CMSetRefCon                        (ConnHandle             hConn,
  441.                                  long                     refCon);
  442.  
  443. EXTERN_API( long )
  444. CMGetRefCon                        (ConnHandle             hConn);
  445.  
  446. EXTERN_API( long )
  447. CMGetUserData                    (ConnHandle             hConn);
  448.  
  449. EXTERN_API( void )
  450. CMSetUserData                    (ConnHandle             hConn,
  451.                                  long                     userData);
  452.  
  453. EXTERN_API( void )
  454. CMGetErrorString                (ConnHandle             hConn,
  455.                                  short                     id,
  456.                                  Str255                 errMsg);
  457.  
  458. EXTERN_API( CMErr )
  459. CMNewIOPB                        (ConnHandle             hConn,
  460.                                  CMIOPBPtr *            theIOPB);
  461.  
  462. EXTERN_API( CMErr )
  463. CMDisposeIOPB                    (ConnHandle             hConn,
  464.                                  CMIOPBPtr                 theIOPB);
  465.  
  466. EXTERN_API( CMErr )
  467. CMPBRead                        (ConnHandle             hConn,
  468.                                  CMIOPBPtr                 theIOPB,
  469.                                  Boolean                 async);
  470.  
  471. EXTERN_API( CMErr )
  472. CMPBWrite                        (ConnHandle             hConn,
  473.                                  CMIOPBPtr                 theIOPB,
  474.                                  Boolean                 async);
  475.  
  476. EXTERN_API( CMErr )
  477. CMPBIOKill                        (ConnHandle             hConn,
  478.                                  CMIOPBPtr                 theIOPB);
  479.  
  480.  
  481. #if PRAGMA_STRUCT_ALIGN
  482.     #pragma options align=reset
  483. #elif PRAGMA_STRUCT_PACKPUSH
  484.     #pragma pack(pop)
  485. #elif PRAGMA_STRUCT_PACK
  486.     #pragma pack()
  487. #endif
  488.  
  489. #ifdef PRAGMA_IMPORT_OFF
  490. #pragma import off
  491. #elif PRAGMA_IMPORT
  492. #pragma import reset
  493. #endif
  494.  
  495. #ifdef __cplusplus
  496. }
  497. #endif
  498.  
  499. #endif /* __CONNECTIONS__ */
  500.  
  501.